Browser bookmarking for multiple environments

ABSTRACT

Input is received to store information to access content displayed within a browser as a bookmark. A bookmark properties form is generated to include fields in which environments are identified as corresponding to the bookmark. Input is received that includes a first URL corresponding to the label of a first bookmark within a first environment. The bookmark is stored by including in the properties form, a label of the bookmark, the first environment corresponding to the bookmark, and the first URL corresponding to the first environment. A second URL is received that corresponds to the label of the first bookmark, but within a second environment, and includes the second environment in the properties form as corresponding to the label of the bookmark, and includes the second URL in the properties form as corresponding to the second environment, wherein the first URL differs from the second URL.

FIELD OF THE INVENTION

The present invention relates generally to the field of browserapplication bookmarking, and more particularly to organizing bookmarklinks across multiple environments.

BACKGROUND OF THE INVENTION

Content available on the World Wide Web offers an enormous amount ofinformation and reference that users may find valuable. Once located, acommon concern associated with information of value or interest is howto easily re-locate the information at a later time. Most individualsuse browsers to search for content on the World Wide Web, and browsersoften include a bookmark feature, which creates and saves a labelassociated with a uniform resource locator (URL) of the content. A URLhas a protocol identifier (e.g. “http”), a resource name, sometimesreferred to as a domain of the URL (e.g. www.example.com), and a contextroot, which includes the remaining characters of the URL excluding thedomain, or resource name (e.g. /myfolder/myfile.pdf).

Browser users tend to “over bookmark”, generating large lists of brieflabels of content, which are often poorly organized, if at all. Overbookmarking makes it very difficult for a user to re-locate contentpreviously found and saved. Many modern browsers, such as Google Chrome(Chrome is a registered trademark of Google Inc.) in the U.S. and may besubject to trademark rights in various jurisdictions throughout theworld and are used here only in reference to the products or servicesproperly denominated by the marks to the extent that such trademarkrights may exist), include type-ahead techniques that facilitate usersin locating content and provide an impression to users that not allcontent of value or interest needs to be bookmarked. However, thetype-ahead-URL-entry mechanism does assume that users know all or partof a URL they wish to access, and therefore does not entirely replace aneed for bookmarking.

Another related bookmarking issue exists among developers. Whiledeveloping an application, activity typically shifts among multiplecontexts, or environments. An environment for software developmentactivity includes one or more computing systems on which a softwareapplication, or an application component, is written, updated, compiled,edited, unit tested, integration tested, debugged, usability tested,staged, and launched for production use. Some or all of such activitiesmay be performed within a different context, or environment.

An integrated development environment (IDE) is a software applicationthat includes access to comprehensive tools and resources for softwaredevelopment. For example, an integrated development environment mayinclude, or provide access to a code editor, build automation, acompiler, a debugger, a built-in web browser, as well as other tools andfeatures, and a graphical user interface enabling access and use of theresources of the environment.

Test environments may include local unit testing, integration testing inwhich multiple “units” of developed code are integrated and tested forfunction and interoperability, usability testing of graphical userinterfaces, and performance of specific test cases. Staging is apre-production environment for final testing prior to deploying toproduction and may be constructed to duplicate the computing systemcomponents and conditions that the application may encounter whenlaunched in a production environment. Staging environments are oftenused to test performance and capacity of the application, as well astesting all installation, configuration, and migration procedures andscripts, used to enable the installation of the software application.

A production environment includes the computing systems and support inwhich the new software application or version release is made availableto general user access, or the environment in which the softwareapplication is “launched”. For example, a series of environments used bysoftware/web application developers may include a local testenvironment, a team test environment, a staging environment, and aproduction environment.

Software development-related environments are only one example ofmultiple environments users may encounter. Other examples in which usersmay experience multiple environments may include simultaneouslyoperating different versions or editions of the same program,educational references for various levels of instructions, such aselementary, middle school, and high school levels, multiple tenants of aservice providers hosting services for multiple distinct businesses,business applications hosted in different locations, and web content andservices associated with enterprise businesses. In some enterprisebusinesses, an organization might support an internal zone for employeesof the enterprise business, and also support an external zone forclients, partners, and other associates. Each zone is an environment,and currently, separate bookmarks may be established by users of contentor service of each environment.

SUMMARY

Embodiments of the present invention disclose a computer program productfor organizing bookmarks of a browser, based on an environment in whichthe bookmarks are used, and provides for one or more computer readablestorage media, and program instructions stored on the one or morecomputer readable storage media. The program instructions includeprogram instructions to determine a first request to save contentdisplayed within a browser as a bookmark associated with a label of afirst bookmark. Program instructions to generate a properties form forthe label of the first bookmark, such that the properties form includesa bookmark label field, and one or more environment fields, each of theone or more environment fields accepting an entry of a uniform resourcelocator. Program instructions to determine from the first request for abookmark associated with the label of the first bookmark, a firstuniform resource locator associated with a first environment, both ofwhich are associated with the label of the first bookmark. Programinstructions to add the label of the first bookmark to the bookmarklabel field and adding the first uniform resource locator to a firstenvironment field of the one or more environment fields of theproperties form. Program instructions to determine a second request tosave content displayed within a browser as a bookmark associated withthe label of the first bookmark, including a second uniform resourcelocator associated with a second environment, both of which areassociated with the label of the first bookmark. Program instructions toadd the second uniform resource locator to the second environment fieldof the one or more environment fields of the properties form, associatedwith the label of the first bookmark, such that the first uniformresource locator is distinct from the second uniform resource locator.Program instructions to store information to access content associatedwith the label of the first bookmark in the properties form the firstuniform resource locator that is used to access content associated withthe label of the first bookmark from the first environment, and thesecond uniform resource locator that is used to access contentassociated with the label of the first bookmark from the secondenvironment, such that the first uniform resource locator associatedwith the first environment and the second uniform resource locatorassociated with the second environment, each includes a context root, inwhich the first uniform resource locator and the second uniform resourcelocator include a distinct domain concatenated with a same context rootfor both the first uniform resource locator and the second uniformresource locator. In response to receiving a request to select abookmark, program instructions to dynamically determine an environmentcorresponding to a domain of an active web page of a browser, andpresent a set of labels of bookmarks that are associated with theenvironment corresponding to the domain of the active web page of thebrowser, and in response to program instructions determining a changefrom the first environment to the second environment, based on detectinga change of a domain of the active web page of the browser, in which thechange of the domain of the active web page of the browser correspondsto the second environment, program instructions to generate a second setof uniform resource locators automatically, based on concatenating thedomain of the second environment and at least one context root of atleast one uniform resource locator of the first set of uniform resourcelocators, such that the second set of uniform resource locators areassociated with the second environment.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a distributed computerprocessing environment, in accordance with an embodiment of the presentinvention.

FIG. 2 is a block diagram illustrating an example of a browser bookmarkproperties form including multiple environments, in accordance with anembodiment of the present invention.

FIG. 3A is a block diagram illustrating an example of a browser bookmarkproperties form including a context root field and multipleenvironments, in accordance with an embodiment of the present invention.

FIG. 3B is a block diagram illustrating an example of an environmentselection menu associated with a selected bookmark of content displayedby a web browser, in accordance with an embodiment of the presentinvention.

FIG. 4 depicts operational steps of a bookmark environment program,operating on a computing device within the distributed computerprocessing environment of FIG. 1, in accordance with an embodiment ofthe present invention.

FIG. 5 depicts a computer system, including a computing device capableof operating the bookmark environment program of FIG. 4, in accordancewith an embodiment of the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention recognize that browser bookmarkmanagement may be complicated by users performing web-based activitieswithin multiple environments. Saving links of web-based content andresources for future easy-access may often result in multiple instancesof a common bookmark having a uniform resource locator (URL) link thatvaries based on the environment of the user. Users having multipleinstances of bookmarks for each of multiple resources or content, mayexperience significant difficulty in locating and navigating lists ofbookmarks to correctly make a desired selection. Embodiments of thepresent invention provide a method, computer program product, andcomputer system for improving browser bookmarking under conditions ofenvironment switching.

A common set of bookmarks, linking to a common set of content and/orresources, may reside across multiple contexts, or environments. Forexample, a developer that performs development and unit testing on codewritten on the developer's client machine may at some point move thecode being developed into a test environment and may have need to accessthe same set of content and/or resource bookmarks (on a different server(domain)). The developer may then move the code into different zones,for example, the code may be installed in a cloud environment, and theremay be a need to access some of the same bookmarks for the sameresources, which are now hosted in a cloud zone. The developer may nextmove the code into a dev-ops environment, and again access the sameresources that have different bookmarks within the current environment.Often the difference of a bookmark from one environment to another maybe the address of the host of the environment. Embodiments of thepresent invention improve the structure and organization of thebookmarks that are used across the multiple environments.

In some embodiments of the present invention an “environment” attributeis added to a browser properties form for bookmarking a particular URLof content or resource on the World Wide Web. Multiple environments mayeach include an instance of a particular content or resource linked toby a bookmark, and an environment-specific URL is associated with thebookmark for each environment. In other embodiments of the presentinvention, the base URL and the context root of bookmark URLs linking tocontent or resources common to multiple environments are determined. Thecontext root of the bookmarks is concatenated with each of theenvironment-specific base URLs (i.e. domain), to produce bookmark URLsassociated with each of the multiple environments.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 is a functional block diagram illustrating adistributed computer processing environment, generally designated 100,in accordance with an embodiment of the present invention. Distributedcomputer processing environment 100 includes computing device 110depicted as hosting bookmark environment program 400, server 120 shownas hosting production environment 160, server 130 shown as hostingstaging environment 170, and server 140 shown as hosting localenvironment 180, all interconnected via network 150.

Network 150 can be, for example, a local area network (LAN), atelecommunications network, a wide area network (WAN), such as theInternet, a virtual local area network (VLAN), or any combination thatcan include wired, wireless, or optical connections. In general, network150 can be any combination of connections and protocols that willsupport communications between servers 120, 130, 140, computing device110, and bookmark environment program 400, in accordance withembodiments of the present invention.

In some embodiments of the present invention, local environment 180,shown as hosted by server 140, is a local environment and may include anintegrated development environment (IDE), which includes a set ofapplications, content, and resources enabling a user (e.g. a softwaredeveloper) to develop, edit, and perform unit debug activity on softwareapplications. From a perspective of bookmarks established in order toaccess URLs in a particular environment, such as local environment 180,the environment may be considered as a “context” of the particularbookmark. Hereafter, the term “environment” as applied to one or morebookmarks is used to refer to the “context” of the particular bookmark.A URL associated with a particular bookmark of a first environment,which links to a resource, differs in some part from a URL associatedwith a particular bookmark of a second environment, which links toanother instance of a similar resource, usually by the designation ofthe server hosting the resource or content to which the bookmark links.

In some embodiments of the present invention, staging environment 170,shown as hosted on server 130, includes a set of applications, content,and resources enabling one or more users to perform various tests onsoftware applications and application components, and enable performanceof the software application to be assessed, and compatibility withhardware and other software applications to be determined. Some or allof the applications, content, and resources may be common to those oflocal environment 180 and are accessible by a user of computing device110. The user may save links to the applications, content, and resourcesby creating bookmarks via a browser; however, staging environment 170 isa distinct and separate environment from local environment 180, and aURL to an application, content, or resource common to local environment180 and staging environment 170, will differ.

In some embodiments of the present invention, production environment160, shown as hosted on server 120, includes hardware, applications, andresources supporting the operation of the software application once theapplication has been “launched”, in which case the software applicationis made generally available for access by its intended set of users.Production environment 160 is distinct and separate from stagingenvironment 170 and local environment 180, and URLs to applications,tools, content, and resources will differ by some degree, from the URLsof applications, tools, content, and resources, common to localenvironment 180 and staging environment 170.

Computing device 110 is an end-user computing device configured toenable connection to multiple environments, including local environment180 of server 140, staging environment 170 of server 130, and productionenvironment 160 of server 120. In some embodiments computing device 110may be a management server, a web server, a mobile computing device, orany other electronic device or computing system capable of receiving andsending data. In other embodiments, computing device 110 may represent avirtual computing device of a computing system utilizing multiplecomputers as a server system, such as in a cloud computing environment.In another embodiment, computing device 110 may be a laptop computer, atablet computer, a netbook computer, a personal computer (PC), a desktopcomputer, a personal digital assistant (PDA), a smart phone, or anyprogrammable electronic device capable of performing the operationalsteps of bookmark environment program 400, via network 150. In anotherembodiment, computing device 110 represents a computing system utilizingclustered computers and components (e.g., database server computers,application server computers, etc.) that act as a single pool ofseamless resources when accessed within distributed computer processingenvironment 100. Computing device 110 may include internal and externalhardware components, as depicted and described with reference to FIG. 5.

In some embodiments each or any of servers 120, 130, and 140, may be amanagement server, a web server, a mobile computing device, or any otherelectronic device or computing system capable of receiving and sendingdata. In other embodiments, servers 120, 130, and 140 may represent avirtual computing device of a computing system utilizing multiplecomputers as a server system, such as in a cloud computing environment.In another embodiment, servers 120, 130, and 140 may be a laptopcomputer, a tablet computer, a netbook computer, a personal computer(PC), a desktop computer, a personal digital assistant (PDA), a smartphone, or any programmable electronic device capable of hosting one ormore of local environment 180, staging environment 170, and productionenvironment 160, each of which is accessible via network 150. In anotherembodiment, servers 120, 130, and 140 represents a computing systemutilizing clustered computers and components (e.g., database servercomputers, application server computers, etc.) that act as a single poolof seamless resources when accessed within distributed computerprocessing environment 100. Servers 120, 130, and 140 may includeinternal and external hardware components, as depicted and describedwith reference to FIG. 5.

Bookmark environment program 400, shown as hosted on computing device110, enables browser bookmarks to be saved such that the URL of abookmark is aligned with each environment in which the bookmark isaccessible. In some embodiments of the present invention, bookmarkenvironment program 400 is integrated with a browser application (notshown) operating on computing device 110. In other embodiments, bookmarkenvironment program 400 works as a separate application working inconjunction with a browser application of computing device 110. Forexample, users in application development roles often access a commonset of tools, content, and resources in various environments, and theURLs associated with each common item of the set differ by theenvironment in which it is accessed, but share a common portion of theURL, referred to herein as a context root. Bookmark environment program400 enables bookmarking of links to the same or similar tools, content,applications, and resources to reflect multiple environments in whicheach bookmark is accessible.

FIG. 2 is a block diagram illustrating an example of bookmark propertiesform 210, including a listing of multiple environments, in accordancewith an embodiment of the present invention. Bookmark properties form210 includes label field 215, environments 220, local field 225, stagingfield 230, production field 235, tags field 240, keyword field 245,description field 250, and sidebar load indicator 255.

Bookmark properties form 210 is an example browser bookmark propertiesform, modified by bookmark environment program 400, for input ofbookmark-related data, including a label to associate with the contentlinked to by the bookmark, which is input into label field 215. In someembodiments of the present invention, a default label may be determinedby the browser, based on the content to which the bookmark links. Inother embodiments the label associated with the bookmark link may beentered into label field 215 by the user. In some embodiments of thepresent invention, a section of bookmark properties form 210 includesenvironments 220, which lists one or more fields that each represent aseparate environment. In the example of bookmark properties form 210environments 220 shows three separate environment fields that includelocal field 225, staging field 230, and production field 235. Forcompleteness, bookmark properties form 210 includes tags field 240, andkeyword field 245, used for search enablement and efficiency,description field 250 for brief reference describing the contentbookmarked, and sidebar load indicator 255, for user selection todisplay the bookmark in a sidebar location of the browser.

The fields of environments 220 hold URLs of content that are hostedand/or supported within different contexts, such that each contextcorresponds to a different environment. Environments 220 of bookmarkproperties form 210 includes a local environment, which in someembodiments of the present invention, may be the local computing deviceto which a user, such as an application developer, submits input andfrom which the developer receives output. Local field 225 holds a URLfor a bookmark of content accessible within the local environment.Environments 220 also includes a staging environment, which hostsapplications being developed and enables various testing and performanceassessments of the application, and may serve to represent the hardwareand other conditions of a production environment to which theapplication will be deployed when testing is complete, and customeracceptance is received. Staging field 230 holds a URL for a bookmark ofcontent accessible within the staging environment. The third environmentshown in the example of bookmark properties form 210 is a productionenvironment, which has a corresponding URL that is held in productionfield 235, and which links to content accessible within the productionenvironment.

In some embodiments of the present invention, populating eachenvironment field with a URL that corresponds to the respectiveenvironment, and associating all environment field URLs with thebookmark label entered in label field 215, enables a user, such as anapplication developer, to organize a bookmark link to content inmultiple environments, under one associated label. In some embodiments,selecting the bookmark label of label field 215, “mybizness consoledisplay”, produces a listing of environment choices from which a usermay select a particular environment in which the user is currentlyengaged. The listing of selectable environments will be discussedfurther below in regards to FIG. 3B. Each of the URLs of included inlocal field 225, staging field 230 and production field 235 ofenvironments 220, links to similar content, but not necessarilyidentical content, hosted within a separate environment of hardware,software, and network connections. For example, a bookmark for “supportcontacts”, most likely will be different for different environments.Thus, the particular URL associated with the bookmark for each ofmultiple environments will correspondingly be different for each of themultiple environments. Embodiments of the present invention providestructured organization to saved bookmarks, improved selectionefficiency, preserved environment differences, and reduction ofredundancy in bookmark listings.

For example, a developer, working on a local computing device, bookmarksa link to a development console application that is located on the localcomputing device at URL: “http://localhost/mybiz/content.html”. Thedeveloper enters the URL link in local field 225 of environments 220 aspart of bookmark properties form 210 that was displayed when thedeveloper selected to bookmark the link, and provides a label for thebookmarked link, “mybizness console display” in label field 215, (or theuser selected URL link is entered by the browser into local field 225 ofbookmark properties form 210). In addition, the developer enters a URLinto staging field 230 and production field 235, but each URL differs bythe URL base, such as “http://biz.staging.com”, for staging field 230,and “http://mybiz.com”, for production field 235, with the context coreof “mybiz/console.html” remaining constant for all URLs associated withthe bookmark label “mybizness console display”, entered in label field215.

The URL link entered for each environment of bookmark properties form210 connects to a representation of the “mybiziness” console display inthat particular environment, however, a selection of environmentdetermines which of those URLs is accessed. In some embodiments of thepresent invention, selection of a saved bookmark includes selection ofan environment corresponding to a particular instance of the bookmarkcontent, such as selecting the staging environment, which accesses theinstance of the console application at URL“http://biz.staging.com/mybiz/console.html”. In other embodiments, theenvironment in which a user is active is detected and the detectedenvironment is selected by default, notwithstanding manual interventionby the user.

FIG. 3A is a block diagram illustrating an example of bookmarkproperties form 305, supporting bookmarks that differ only by contextroot. Bookmark properties form 305 includes a context root field andmultiple environments, in accordance with an embodiment of the presentinvention. Bookmark properties form 305 depicts data entry fieldssimilar to those discussed in regards to bookmark properties form 210 ofFIG. 2; however, bookmark properties form 305 includes context rootfield 315, and local field 320, staging field 325, and production field330 are populated with only a base URL corresponding to the respectiveenvironment. For completeness of the example form, bookmark propertiesform 305 includes tags field 335, and keyword field 340, used for searchenablement and efficiency, description field 345 for brief referencedescribing the content bookmarked, and sidebar load indicator 350, foruser selection to display the bookmark in a sidebar location of thebrowser.

Context root field 315 is shown in FIG. 3A as including a URL root of“mybiz/console.html”, and local field 320 is shown with a base URL of“http://localhost/”, staging field 325 is shown with a base URL of“http://biz.staging.com/”, and production field 330 is shown asincluding a base URL of “http://mybiz.com/”. In some embodiments of thepresent invention, a user has determined and made entries that includethe base URLs for each of a local, staging, and production environment.Upon indication of bookmarking a selection of content, such as anapplication “console.html”, located in a folder labelled “mybiz”, thecontext root of the URL associated with the bookmark target, is added tocontext root field 315, which in some embodiments is done automaticallyby determining the selected content and location, and in otherembodiments, the context root may be entered manually. Upon subsequentselection by the user, of the bookmark “mybizness console display”,included in label field 310 of bookmark properties form 305, the user ispresented with a listing of environments in which access to “mybiznessconsole display” is available. Selection of an environment concatenatesthe base URL (i.e. the domain) of the environment, such as“http://biz.staging.com/” for the staging environment, with the contextroot “mybiz/console.html”, to complete the URL and access the selectedbookmark content within the selected environment, without duplicatelistings of URLs for the user to decipher and choose from.

In some embodiments of the present invention, the URL of a bookmarkwithin a new environment may be dynamically generated (by bookmarkenvironment program 400, discussed below). The dynamic generation of thebookmark may use the active web page of a browser, which is a web pagewithin an open browser in which the cursor is active and responds tokeyboard or pointing device activity. The bookmark may be dynamicallygenerated by determining the current environment of an active web pagein which a user is operating, and concatenating the context root of thebookmark for a previously saved environment with the base URL or domainof the current environment (i.e. appending the context root to thedomain), and adding the generated URL to a field within the modifiedbrowser properties form for the bookmark.

FIG. 3B is a block diagram illustrating an example of environmentselection menu 355 associated with a selected bookmark of contentdisplayed by a web browser, in accordance with an embodiment of thepresent invention. Environment selection menu 355 corresponds to abookmark folder labelled “product development” and includes drop-downlist 360, which further includes local environment selection 365, testenvironment selection 370, staging environment selection 375, andproduction environment selection 380. Environment selection menu 355also includes links to content having the labels: app_server console392, database admin 394, and app_data history 396.

Drop-down list 360 includes a listing of various environments in whichinstances of content, applications, and/or tools may be accessed by thelinks of the “product development” bookmark folder as displayed inenvironment selection menu 355. In some environments of the presentinvention, local environment selection 365 is a local computing systemcomprised of one or more computing devices, system components, andnetwork access, used by a developer for application developmentactivity, or by a other users for various activities, such as systemadministrative support. Test environment selection 370 may include oneor more systems that may be used for loading one or more softwareapplication modules and testing module function, interaction, andintegration. Staging environment selection 375 may include one or moresystems that may be used for testing the operational performance of adeveloped application, as well as compatibility of the applicationfunction with the hardware and other software components of the stagingenvironment, which is often constructed to replicate the productionenvironment selection 380 structure and conditions, prior to releasingthe developed application to “go live”. Production environment selection380 may include one or more systems in which a developed softwareapplication is hosted and released as generally available for approvedusers.

In some embodiments of the present invention, the app_server console392, database admin 394, and app_data history 396 links of FIG. 3B arepreviously saved bookmarks and are accessible in multiple environmentsas depicted by drop down list 360, that includes local environmentselection 365, test environment selection 370, staging environmentselection 375, and production environment selection 380. A user, such asa product developer, selecting the “product development” bookmarkfolder, corresponding to the development environment, is presented withdrop down list 360, which includes labels corresponding to theenvironments in which the links of app_server console 392, databaseadmin 394, and app_data history 396, are available. The user selects anenvironment from drop down list 360, such as local environment selection365, as depicted by the position of cursor 390. After selecting localenvironment selection 365, the user is able to select a link fromapp_server console 392, database admin 394, and app_data history 396,which are presented as a listing of links included in the “productdevelopment” bookmark folder, and the selected link of the selectedenvironment, opens in a browser window of the user's computing device.

In some embodiments, bookmark environment program 400 determines thecurrent environment as the default environment, which the user mayoverride. If the user switches environments, bookmark environmentprogram 400 determines the new environment as the default environmentfor bookmark link selections. In other embodiments, an environment isselected by a user designating the environment in which a bookmark linkis to be selected. In some embodiments of the present invention, inwhich only the context root of the URLs vary, by selecting anenvironment from drop-down list 360 a URL base is defined. Bysubsequently selecting a bookmark item, for example, database admin 394,the context root of the bookmark is selected and concatenated with thepreviously selected URL base to form a complete URL link, which accessesthe content, application, or tool associated with the context root, fromthe selected environment associated with the URL base.

FIG. 4 depicts operational steps of bookmark environment program 400,operating on a computing device within distributed computer processingenvironment 100 of FIG. 1, in accordance with an embodiment of thepresent invention. Bookmark environment program 400 continuouslymonitors for receipt of a bookmark to be saved (decision step 405). Insome embodiments of the present invention, bookmark environment program400 continuously “listens” for, or monitors input indicating a bookmarkis to be saved. For example bookmark environment program 400 may performa background loop checking for a browser selection to bookmark a link.For the case in which bookmark environment program 400 does not receivean indication that a bookmark is to be saved (step 405, “NO” branch),bookmark environment program 400 continues to monitor (listen) forbookmarks to be saved, looping to decision step 405. For the case inwhich bookmark environment program 400 receives input indicating abookmark is to be saved (step 405, “YES” branch), bookmark environmentprogram 400 receives input defining an environment for the bookmark, andbookmark environment program 400 edits the fields of a bookmarkproperties form (step 410), to include the environment.

As a user, such as an application developer, selects online content andresources to be bookmarked, bookmark environment program 400 receivesinput defining the environment of the bookmark from the user. In someembodiments of the present invention, the environments of the particularbookmarks are identified by input received by bookmark environmentprogram 400 that is associated with the bookmark to be saved, which insome embodiments, is received from the user and applied to fields of abookmark properties form, such as bookmark properties forms 210 or 305.The input includes the environment in which the bookmark is to beassociated in a bookmark listing. For example, the environment for thebookmark may be a “local” environment, which may include the computingdevice on which the user is working and the local system componentsavailable to the user. In some embodiments, the input includes thecomplete URL for a bookmark to be associated with a particularenvironment, in another embodiment, the base URL is associated with theidentified environment, and a context root of the URL is associated withthe user-designated label for the particular bookmark. For example, forthe fabricated URL:http://abcTesting.com/test01/application01/setup.txt, the base URLportion is, “http://abcTesting.com”, and the context root is“/test01/application01/setup.txt”.

In a further example, bookmark environment program 400 receives inputdesignating a bookmark to be saved. Bookmark environment program 400receives input for a bookmark properties form which associates theparticular bookmark with a “local” environment and includes a full URLlink to the target item within the local environment. Bookmarkenvironment program 400 edits the bookmark properties form for thebookmark to include the designated local environment and associate thefull URL with the user defined bookmark label (e.g. bookmark label 215,FIG. 2), for the local environment. In another embodiment, the inputreceived for a bookmark is parsed by bookmark environment program 400and the base URL, or domain, is associated with a user designatedenvironment of “local” and the context root of the URL is associatedwith a user-designated label of the target item (e.g. context root field315, and local field 320, FIG. 3A). Bookmark environment program 400edits the properties form for the bookmark to reflect the particularbookmark URL of the targeted item as corresponding to the environmentreceived as input.

Bookmark environment program 400 adds the received bookmark URL to oneor more of a plurality of web environments (step 415). Having receivedthe input designating the particular environment of the bookmark, andhaving received a URL link associated with the bookmark, bookmarkenvironment program 400 adds the bookmark URL to a bookmark listing, andassociates the bookmark with the designated environment. In someembodiments of the present invention, bookmark environment program 400automatically determines the current environment, for example, by thedomain of the URL, and associates the received bookmark with the currentenvironment as a default. In other embodiments, bookmark environmentprogram 400 associates the bookmark with the environment received by theuser input to fields of a bookmark properties form of a browser.

For example, a user operating within a staging environment, providesinput for a particular bookmark to be saved. Bookmark environmentprogram 400 receives the input and adds the bookmark URL to a folderassociated with the staging environment, which is designated or selectedby the user, within a listing of bookmarks of the user's browser. Thebookmark is saved and associated with the staging environment in whichthe user is working with the active browser window. In some embodimentsof the present invention, a base URL of the bookmark is saved as anenvironment, and may be selected by the user to associate the root ofsubsequent bookmarks to the same environment. Multiple bookmarks may bereceived and result in establishing a plurality of environments, and asadditional bookmarks are received, bookmark environment program 400associates each bookmark with a new or existing correspondingenvironment (e.g. by user input or detection by bookmark environmentprogram 400). Bookmarks of resources that are hosted in each of multipleenvironments are saved by bookmark environment program 400 byassociating each bookmark instance with its corresponding environment.Users indicate a request to access a label of a saved bookmark and arepresented with a listing of environments. The user accesses the label ofthe bookmark by selection of an environment by the user (or determinedby bookmark environment program 400), followed by presentation of thebookmark labels (that correspond to URLs of the respective bookmarks)associated with the selected (or determined) environment, to the user.In this manner the user does not have to discern between labels or URLsof bookmarks for multiple environments.

Bookmark environment program 400 determines whether input to select asaved bookmark has been received (decision step 420), and in response todetermining that input to select a saved bookmark has not been received(step 420, “NO” branch), bookmark environment program 400 returns tostep 405 and proceeds to monitor (listen) for input of a request for abookmark to be selected. For the case in which bookmark environmentprogram 400 does receive input to select a saved bookmark (step 420,“YES” branch), bookmark environment program 400 displays a listing of aplurality of environments associated with saved bookmarks (step 425).Each bookmark, when saved, is associated with a particular environment.In some embodiments of the present invention, the selection of a URLlinking to content or resources, to be saved as a bookmark, isaccompanied by a bookmark properties form in which an environment isselected from previously defined environments, or a new environment isadded. The bookmark to be saved is associated with the selected or addedenvironment, and when user input is subsequently received to displaybookmarks for selection, bookmark environment program 400 displays alisting of the plurality of environments.

Having displayed a plurality of environments from which a bookmark maybe selected, bookmark environment program 400 receives input of aselection of an environment (step 430). Bookmark environment program 400presents a display of environments from which a bookmark may beselected. The user selects an environment, generally by use of apointing device, touch screen, or keyboard entry, and bookmarkenvironment program 400 receives the selection of the environment. Forexample, having indicated a bookmark is to be selected, a user ispresented with a list of environments that include, a local environment,a staging environment, and a production environment. The user iscurrently operating within the staging environment and therefore selectsfrom the display, the staging environment, from which a bookmark is tobe selected. Bookmark environment program 400 receives the input fromthe user selecting the staging environment. In another exemplaryembodiment, bookmark environment program 400 determines that the user isoperating within the staging environment and uses the determination asthe input of the selected environment. In some embodiments, an optionfor manually changing the selection of environments may accompany adisplay of bookmarks resulting from automatic determination of thecurrent environment of the user.

Bookmark environment program 400 receives the selection of anenvironment and displays the bookmarks associated with the selectedenvironment (step 435). Each URL saved by bookmark environment program400 is associated with an environment, in which the association aligns aparticular instance of a bookmark with a particular environment. Theassociation of bookmark to environment eliminates previously experiencedredundancy within listings of bookmarks, and removes the need for usersto recall or decipher the environment to which a particular bookmark islinked. In some embodiments of the present invention, the user ispresented a list of only those bookmarks that are associated with theparticular environment selected by the user, or automatically determinedby bookmark environment program 400.

Bookmark environment program 400 receives the bookmark selection fromthe selected environment and forwards the URL of the selected bookmarkto a browser (step 440). Having displayed the set of bookmarks that areassociated with the selected (or determined) environment, bookmarkenvironment program 400 receives the selection of the bookmark from alisting of the bookmarks of the selected environment, and forwards theURL of the bookmark to the user's web browser. Having completed receiptof the bookmark selection from the environment selected by the user, ordetermined by bookmark environment program 400, and having forwarded theURL of the selected bookmark to the user's browser, bookmark environmentprogram 400 ends.

Embodiments of the present invention that are discussed include examplesof application development environments for purposes of explanation andclarification, and are not intended to be limiting. Other logicalgroupings of content, tools, and resource may also benefit fromembodiments of the present invention. One such area may be “devopsenvironments” which may benefit from having a task-based grouping. Forexample, resources commonly used and bookmarked in a devops environmentmay include a baremetal provisioning url, a vm provisioning url, and anadmin console url for each of three environments of development, test,and production. In this case it may make sense to customize thegroupings of bookmarks as shown below in Table 1, instead of organizingthem by environment.

MyProject DevOps:

TABLE 1 customized bookmark organization. Bare Metal Provisioning VMProvisioning Admin Console Development: Development: Development:http://baremetal.order_dev/ http://provisionvm_dev/ http://admin_dev/development_template development_template development_template Test:Test: Test: http://baremetal.order_test/ http://provisionvm_test/http://admin_test/ test_template test_template test_template Production:Production: Production: http://baremetal_order_prod/http://provisionvm_prod/ http://admin_prod/ production_templateproduction_template production_template

Embodiments of the present invention may also be applied within anIntegrated Development Environment (IDE), such that when a user switchesthe server on which they are deploying applications, the browserenvironment could also switch by automatically detecting the hostingserver. In this manner, when a user accesses a link, for example abookmark for “admin console”, there is no need for the user to toggle adrop down box to select a new environment, such as a “local”environment, when the user is testing locally from within their IDE. Insome embodiments of the present invention, the automatic determinationof the environment in which a user is working, based on determining thehosting server(s), may be extendable to enable cloud technologies toautomatically create a set of customized bookmarks, based on an existingbookmark list, as environments are created and/or provisioned in cloudhosting sources. In some embodiments, the techniques of automaticallydetermining an environment of a user, and/or creating customizedbookmarks based on a change of environments, may be included within abrowser-based technology and reduce or eliminate a need for manuallymodifying bookmarks to align with working environments.

Some embodiments of the present invention include a user interfaceassociated with one or more browsers that provide and enable a user tocreate, read, update, and delete, entries made to the browser propertiesform for bookmarks. The various entries of the browser properties formcorrespond to environments, labels of bookmarks, uniform resourcelocators associated with labels of bookmarks, and domains and contextroots associated with uniform resource locators.

FIG. 5 depicts computer system 500, and includes computing device 505,which has similar components to computing device 110, and servers 120,130, and 140, and has capability to operate bookmark environment program400 of FIG. 4, similar to that of computing device 110, in accordancewith an embodiment of the present invention. It should be appreciatedthat FIG. 5 provides only an illustration of one implementation and doesnot imply any limitations with regard to the environments in whichdifferent embodiments may be implemented. Many modifications to thedepicted environment may be made.

Computing device 505 includes communications fabric 502, which providescommunications between computer processor(s) 504, memory 506, persistentstorage 508, communications unit 510, and input/output (I/O)interface(s) 512. Communications fabric 502 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric502 can be implemented with one or more buses.

Memory 506, cache memory 516, and persistent storage 508 are computerreadable storage media. In this embodiment, memory 506 includes randomaccess memory (RAM) 514. In general, memory 506 can include any suitablevolatile or non-volatile computer readable storage media.

In some embodiments of the present invention, bookmark environmentprogram 400 is stored in persistent storage 508 for execution by one ormore of the respective computer processors 504 via one or more memoriesof memory 506. In some embodiments, persistent storage 508 includes amagnetic hard disk drive. Alternatively, or in addition to a magnetichard disk drive, persistent storage 508 can include a solid state harddrive, a semiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 508 may also be removable. Forexample, a removable hard drive may be used for persistent storage 508.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage508.

Communications unit 510, in these examples, provides for communicationswith other data processing systems or devices, including resources ofdistributed computer processing environment 100, computing device 110,and servers 120, 130, and 140. In these examples, communications unit510 includes one or more network interface cards. Communications unit510 may provide communications through the use of either or bothphysical and wireless communications links. Bookmark environment program400 may be downloaded to persistent storage 508 through communicationsunit 510.

I/O interface(s) 512 allows for input and output of data with otherdevices that may be connected to computer system 500. For example, I/Ointerface 512 may provide a connection to external devices 518 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 518 can also include portable computer readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention, e.g., bookmark environment program400 can be stored on such portable computer readable storage media andcan be loaded onto persistent storage 508 via I/O interface(s) 512. I/Ointerface(s) 512 also connect to a display 520.

Display 520 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

What is claimed is:
 1. A computer program product for organizingbookmarks of a browser, based on an environment in which the bookmarksof the browser are used, the computer program product comprising: one ormore computer readable storage media and program instructions stored onthe one or more computer readable storage media, the programinstructions comprising: program instructions to determine a firstrequest to save content displayed within a browser as a bookmarkassociated with a label of a first bookmark; program instructions togenerate a properties form for the label of the first bookmark, whereinthe properties form includes a bookmark label field, and one or moreenvironment fields, each of the one or more environment fields acceptingan entry of a uniform resource locator; program instructions todetermine from the first request for a bookmark associated with thelabel of the first bookmark, a first uniform resource locator associatedwith a first environment, both of which are associated with the label ofthe first bookmark; program instructions to populate the properties formby adding the label of the first bookmark to the bookmark label fieldand adding the first uniform resource locator to a first environmentfield of the one or more environment fields; program instructions todetermine a second request to save content displayed within a browser asa bookmark associated with the label of the first bookmark, including asecond uniform resource locator associated with a second environment,both of which are associated with the label of the first bookmark;program instructions to add the second uniform resource locator to thesecond environment field of the one or more environment fields of theproperties form, associated with the label of the first bookmark, andwherein the first uniform resource locator is distinct from the seconduniform resource locator; program instructions to store information toaccess content associated with the label of the first bookmark in theproperties form the first uniform resource locator that is used toaccess content associated with the label of the first bookmark from thefirst environment, and the second uniform resource locator that is usedto access content associated with the label of the first bookmark fromthe second environment, wherein the first uniform resource locatorassociated with the first environment and the second uniform resourcelocator associated with the second environment, each include a contextroot, such that each of the first uniform resource locator and thesecond uniform resource locator includes a distinct domain concatenatedwith a same context root for both the first uniform resource locator andthe second uniform resource locator; in response to receiving a requestto select a bookmark, program instructions to dynamically determine anenvironment corresponding to a domain of an active web page of abrowser, and present a set of labels of bookmarks that are associatedwith the environment corresponding to the domain of the active web pageof the browser; and in response to determining a change from the firstenvironment to the second environment, based on detecting a change of adomain of the active web page of the browser, wherein the change of thedomain of the active web page of the browser corresponds to the secondenvironment, program instructions to generate a second set of uniformresource locators automatically, based on concatenating the domain ofthe second environment and at least one context root of at least oneuniform resource locator of the first set of uniform resource locators,wherein the second set of uniform resource locators are associated withthe second environment.